// util/redis_client.go
package util

import (
	"context"
	"fmt"
	"log"
	"time"

	"v2/config"

	"github.com/go-redis/redis/v8"
)

var (
	redisClient *redis.Client
)

// InitRedisClient 初始化 Redis 客户端
func InitRedisClient() error {
	// 从配置中获取 Redis 配置
	redisConfig := config.Global.Redis

	log.Printf("[Redis] 正在连接 Redis: %s:%d", redisConfig.Host, redisConfig.Port)

	// 创建 Redis 客户端
	redisClient = redis.NewClient(&redis.Options{
		Addr:     fmt.Sprintf("%s:%d", redisConfig.Host, redisConfig.Port),
		Password: redisConfig.Password,
		DB:       redisConfig.DB,
		PoolSize: redisConfig.PoolSize,
	})

	// 测试连接
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()

	_, err := redisClient.Ping(ctx).Result()
	if err != nil {
		return fmt.Errorf("无法连接到 Redis: %v", err)
	}

	log.Printf("[Redis] 连接成功: %s:%d", redisConfig.Host, redisConfig.Port)
	return nil
}

// GetRedisClient 获取 Redis 客户端实例
func GetRedisClient() *redis.Client {
	return redisClient
}
